package com.wande.dataplatform.service;

import com.wande.common.mybatis.core.page.PageQuery;
import com.wande.common.mybatis.core.page.TableDataInfo;
import com.wande.dataplatform.domain.bo.ScreenBo;
import com.wande.dataplatform.domain.vo.ScreenVO;

import java.util.List;

/**
 * 大屏设计Service接口
 *
 * @author wande
 */
public interface IScreenService {

    /**
     * 查询大屏设计列表
     *
     * @param bo 查询条件
     * @param pageQuery 分页参数
     * @return 大屏设计列表
     */
    TableDataInfo<ScreenVO> queryPageList(ScreenBo bo, PageQuery pageQuery);

    /**
     * 查询大屏设计列表
     *
     * @param bo 查询条件
     * @return 大屏设计列表
     */
    List<ScreenVO> queryList(ScreenBo bo);

    /**
     * 查询大屏设计详情
     *
     * @param id 主键
     * @return 大屏设计详情
     */
    ScreenVO queryById(Long id);

    /**
     * 新增大屏设计
     *
     * @param bo 大屏设计信息
     * @return 新增结果
     */
    Boolean insertByBo(ScreenBo bo);

    /**
     * 修改大屏设计
     *
     * @param bo 大屏设计信息
     * @return 修改结果
     */
    Boolean updateByBo(ScreenBo bo);

    /**
     * 删除大屏设计
     *
     * @param ids 主键集合
     * @return 删除结果
     */
    Boolean deleteByIds(List<Long> ids);

    /**
     * 发布大屏
     *
     * @param id 大屏ID
     * @return 发布结果
     */
    Boolean publishScreen(Long id);

    /**
     * 下线大屏
     *
     * @param id 大屏ID
     * @return 下线结果
     */
    Boolean offlineScreen(Long id);

    /**
     * 获取预览URL
     *
     * @param id 大屏ID
     * @return 预览URL
     */
    String getPreviewUrl(Long id);

    /**
     * 查询大屏数据
     * 根据大屏配置的数据源查询实际数据
     *
     * @param id 大屏ID
     * @param componentId 组件ID
     * @return 组件数据
     */
    Object queryScreenData(Long id, String componentId);
}
